In systems that use a common data bus for transmitting data between an initiator device and any of a number of target devices, it is often necessary to control which of the devices has access to the data bus at any point in time. Providing such control typically requires arbitration between the devices to determine which of them gets control in a given instance. A conventional form of arbitration involves assigning each of the devices a permanent ID value, which gives it a particular priority relative to the other devices connected to the bus. Thereafter, if there is contention for control of the bus, the device with the highest priority ID value wins the arbitration. The other devices withdraw from contention, giving the high priority device control of the bus.
The permanent ID method of arbitration has been successful in the past, due primarily to the fact that only one initiator was typically connected to a given bus. That is, in most systems, only one of the devices attached to the bus was an initiator, and could make data requests to the other devices of the system. While the other devices would make data transfers in response, and therefore required the ability to arbitrate periodically for control of the bus, the single-initiator nature of the system made any contentions for the bus manageable. Thus, the permanent priority ID values assigned to the different devices provided a satisfactory system. However, more recently, SCSI buses have been configured with more than one initiator connected to them at a time. This creates a situation in which different initiators may be simultaneously trying to send and receive data on the same bus at the same time. As a result, more frequent contentions occur and, if the bus is particularly busy, the use of a permanent ID system can result in the devices with lower priority IDs being continuously blocked from access to the bus. It is therefore an object of this invention to provide a fair arbitration mechanism for data bus control, particularly when it is a SCSI bus, and to there by prevent the "starving-out" of devices that are assigned a low arbitration priority.